// IProtocol645Manager.aidl
package com.sgcc.pda.hw;
import com.sgcc.pda.hw.ReturnResult;
// Declare any non-default types here with import statements

interface IProtocolIECManager {

    /**
     *
     * @param meterAddress 表通讯地址
     * @param itemCode     寄存器
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult readIECData(String meterAddress, String itemCode);

    /**
     * 进入命令模式
     *
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
   ReturnResult enterProgrammingMode(String meterAddress);

    /**
     * 登录命令
     *
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
     ReturnResult loginCode(String meterAddress);

    /**
     * 读取命令
     *
     * @param meterAddress 表通讯地址
     * @param itemCode     寄存器
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
   ReturnResult readData(String meterAddress, String itemCode);


    /**
     * 读取负荷曲线最早的时间记录
     *
     * @param meterAddress 表通讯地址
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
   ReturnResult readEarliestTime(String meterAddress);


   /**
     * 读取比例因子
     *
     * @param meterAddress 表通讯地址
     * @param itemCode  寄存器地址
     * @param serialNum 帧序列号
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
   ReturnResult readScaleFactor(String meterAddress, String itemCode);
  /**
     * 读取负荷曲线记录时间间隔
     *
     * @param meterAddress 表通讯地址
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
   ReturnResult readInterval(String meterAddress);

   /**
        * FI读取负荷曲线记录
        *
        * @param meterAddress 表通讯地址
        * @return ReturnResult  :int code  0 成功  其他失败
        * :List<String> datas（code==0）:
        * 0:linkUserData      返回-表号
        * :List<String> datas(code==其他): size==1
        * 0:错误描述
        */
      ReturnResult readLoadWithFI(String meterAddress);


   /**
        * FR读取负荷曲线记录
        *
        * @param meterAddress 表通讯地址
        * @param earlistNum  要读取的最早的一条记录的记录号
        * @param dataNums    要读取的条数
        * @param offset      偏移量
        * @param totalLength 每条记录拟要读取的量的总字节数
        * @return ReturnResult  :int code  0 成功  其他失败
        * :List<String> datas（code==0）:
        * 0:linkUserData      返回-表号
        * :List<String> datas(code==其他): size==1
        * 0:错误描述
        */
      ReturnResult readLoadWithFR(String meterAddress, String earlistNum, String dataNums, String offset, String totalLength);



    /**
     *
     * 退出电表
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult exitMeter(String meterAddress);
    /**
     *
     * 退出电表
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    void stopSeial();


   /**
    * 读取曲线
    * @param meterAddress 表通讯地址
    * @param startTime    曲线开始时间
    * @param endTime      曲线结束时间
    * @return ReturnResult  :int code  0 成功  其他失败
    * :List<String> datas（code==0）:
    * 0:数据
    * :List<String> datas(code==其他): size==1
    * 0:错误描述
    */
  ReturnResult readCurveData(String meterAddress,String startTime,String endTime);
}
